package com.woniuxy.utils;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;

import java.io.PrintWriter;
import java.io.StringWriter;

/**
 * @Author: linKe
 * @Date: 2021/11/26 1:33
 * @FileName: ExceptionUtil
 * @version: 1.0
 * @Description: 异常工具类
 */
public class ExceptionUtil {
    /**
     * 获取exception的详细错误信息。
     */
    public static String getExceptionMessage(Throwable e) {
        StringWriter sw = new StringWriter();
        //将此 throwable 及其回溯打印到指定的打印编写器。
        e.printStackTrace(new PrintWriter(sw, true));
        return sw.toString();
    }

    /**
     * 获取根源异常信息
     */
    public static String getRootErrorMessage(Exception e) {
        //返回：获取根本原因Throwable ， null如果空抛出输入
        Throwable root = ExceptionUtils.getRootCause(e);
        root = (root == null ? e : root);
        if (root == null) {
            return "";
        }
        //返回： 此Throwable实例的详细消息字符串（可能为null ）
        String msg = root.getMessage();
        if (msg == null) {
            return "null";
        }
        //返回传入的字符串，或者如果字符串为null ，则返回空字符串 ("")。
        return StringUtils.defaultString(msg);
    }
}

